home *** CD-ROM | disk | FTP | other *** search
- #!/bin/bash
- set -e
- export LC_ALL=C
-
- type=$1
- preversion=$2
-
- zone_banner() {
- TZBase=$(LC_ALL=C TZ=UTC0 date)
- UTdate=$(TZ=UTC0 date -d "$TZBase")
- TZdate=$(TZ="$timezone" date -d "$TZBase")
- extra_info="
- Local time is now: $TZdate.
- Universal Time is now: $UTdate."
- echo "Current default timezone: '$timezone'.$extra_info"
- echo "Run 'tzconfig' if you wish to change it."
- }
-
- set_timezone() {
- frontend=`echo "$DEBIAN_FRONTEND" | tr '[:upper:]' '[:lower:]'`
- if [ "$frontend" = noninteractive ]; then
- echo "Non-interactive mode, setting timezone to UTC. Run tzconfig to change."
- echo "UTC" >/etc/timezone
- ln -sf /usr/share/zoneinfo/UTC /etc/localtime
- else
- echo "Running 'tzconfig' to set this system's timezone."
- /usr/sbin/tzconfig
- fi
- }
-
- realpath()
- {
- fname=${1%/} # strips trailing '/'
- while [ -L "$fname" ]; do
- oldfname="$fname"
- fname="$(command ls -l $fname)"
- fname="${fname#*\> }"
- if [ "$fname" = . ] ; then
- fname="$(dirname $oldfname)"
- elif echo $fname | grep -vq '^/' - ; then
- fname="$(dirname $oldfname)/$fname"
- fi
- done
- pushd $(dirname $fname) > /dev/null
- fname=$(pwd -P)/$(basename $fname)
- popd > /dev/null
- echo $fname
- }
-
- if [ "$type" = "configure" ]
- then
- if [ -f /etc/timezone ]; then
- timezone=$(head -n 1 /etc/timezone | sed -e "s/ .*//")
- else
- timezone=Factory
- fi
- if [ "$timezone" = Factory ]; then
- if [ -L /etc/localtime ]; then
- localtime_link=$(realpath /etc/localtime)
- if [ -f "$localtime_link" ]; then
- link_not_dangling=true
- fi
- if [ "$link_not_dangling" = true ]; then
- timezone=$(echo $localtime_link | sed 's%^/usr/share/zoneinfo/%%')
- fi
- fi
- fi
- if [ -f /usr/share/zoneinfo/$timezone ] && [ "$timezone" != Factory ]
- then
- # zic -l $timezone
- rm -f /etc/localtime && \
- cp -f /usr/share/zoneinfo/$timezone /etc/localtime
- zone_banner
- # Handle problem caused by lame old tzconfig.
- elif [ "$timezone" = "US/Pacific-New" ]
- then
- echo "US/Pacific" > /etc/timezone
- # zic -l US/Pacific
- rm -f /etc/localtime && \
- cp -f /usr/share/zoneinfo/US/Pacific /etc/localtime
- zone_banner
- else
- set_timezone
- fi
- if [ "$(date +%Z)" = "/etc/localtime" ]; then
- set_timezone
- fi
- fi
-
-
-
-
- exit 0
-